////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//#include "FpsColladaSkinnedMesh.h"
//#include "coreutil.h"
//
//#include "Game/Utils/Utils.h"
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//using namespace irr;
//using namespace core;
//using namespace scene;
//using core::stepPointer;
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//FpsColladaSkinnedMesh::FpsColladaSkinnedMesh(
//	const collada::CColladaDatabase& collada, 
//	collada::SController& controller,
//	res::vector<res::String>* skeletons,
//	collada::IRootSceneNode* rootSceneNode,
//	bool useProcessBuffer
//)
//	: CColladaSkinnedMesh(collada, controller, skeletons, rootSceneNode, useProcessBuffer),
//	useDistorsion(false)
//{
//	IMeshBuffer* meshBuffer = Source->getMeshBuffer(0);
//	const s32 vertexCount = meshBuffer->getVertexCount();
//
//	DuplicateVertices.set_used(vertexCount);
//
//	video::SS3DVertexComponentArrays* srcVertice = (video::S3DVertexComponentArrays*)meshBuffer->getVertices();
//	core::vector3df* vertexPtr = srcVertice->Position;
//	int vertexPtrStride = srcVertice->PositionStride;
//
//	for (s32 vertexIt = 0; vertexIt < vertexCount; ++vertexIt)
//	{
//		DuplicateVertices[vertexIt] = 0;
//
//		core::vector3df* vertexPtr2 = srcVertice->Position;
//		for (s32 vertexIt2 = 0; vertexIt2 < vertexIt; ++vertexIt2)
//		{
//			if(*vertexPtr == *vertexPtr2)
//			{
//				DuplicateVertices[vertexIt]		=	1;
//				DuplicateVertices[vertexIt2]	=	1;
//				break;
//			}
//
//			vertexPtr2 = stepPointer(vertexPtr2, vertexPtrStride);
//		}
//
//		vertexPtr = stepPointer(vertexPtr, vertexPtrStride);
//	}
//}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//void FpsColladaSkinnedMesh::skin()
//{
//	CColladaSkinnedMesh::skin();
//
//	if(useDistorsion)
//	{
//		IMeshBuffer* meshBuffer = Source->getMeshBuffer(0);
//		const s32 vertexCount = meshBuffer->getVertexCount();
//		
//		u32 boneIt = 0;
//
//		vector3df* posIt = OutputBuffer.Position;
//		int posStride = OutputBuffer.PositionStride;
//
//		vector2df* texIt = OutputBuffer.TexCoord[0].Coord;
//		int texStride = OutputBuffer.TexCoord[0];
//
//		const float distorsionConst = 1.f;
//		
//		{
//			for (s32 vertexIt = 0; vertexIt < vertexCount; ++vertexIt)
//			{
//				if(!DuplicateVertices[vertexIt])
//				{
//					vector3df delta = core::vector3df(
//						random(100) * (distorsionConst * 0.02f) - distorsionConst,
//						random(100) * (distorsionConst * 0.02f) - distorsionConst,
//						random(100) * (distorsionConst * 0.02f) - distorsionConst);
//					
//					*posIt += delta;
//				}
//
//				posIt = stepPointer(posIt, posStride);
//			}	
//		}
//	}
//}
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
